package org.jiajie.coffeecodes.concurrent.pattern.interrupt;

/**
 * 监控代理
 * @author jay
 */
public class Proxy {
    // 线程终止标志位
    volatile boolean terminated = false;
    boolean started = false;
    /**
     * 采集线程
     */
    Thread rptThread;

    /**
     * 启动采集功能
     */
    synchronized void start(){
        // 不允许同时启动多个采集线程
        if (started) {
            return;
        }
        started = true;
        terminated = false;
        rptThread = new Thread(()->{
            while (true){
                // 省略采集、回传实现
                report();
                // 每隔两秒钟采集、回传一次数据
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                }
            }
            // 执行到此说明线程马上终止
        });
        rptThread.start();
    }

    private void report() {
    }

    /**
     * 终止采集功能
     */
    synchronized void stop(){
        // 设置中断标志位
        terminated = true;
        // 如何实现？
        rptThread.interrupt();
    }
}
